import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.KeyEvent;


public class Player extends GameObject{
	
//	public Image image;//표시 이미지, 원칙은 private
	public Image P1LifeImage1;
	public Image P1LifeImage2;
//	public int x = 20;
//	public int y = 100;
	public int dx, dy;//이동량 (키보드 조작에 의해서 성정될 값) 보통 d는 delta(속도의 변화량, 거리)
//	public int damageCount = 0;
	Rectangle rect;
	
	public boolean shoot = false;
//	public boolean active = true;
	
	public Player(Image image, Image P1LifeImage1, Image P1LifeImage2){
		this.image = image; //하나를 만들어서 재사용 하려고...
		this.P1LifeImage1 = P1LifeImage1;
		this.P1LifeImage2 = P1LifeImage2;
		rect = new Rectangle(image.getWidth(null) / 3, image.getHeight(null) / 3); //크기 변경이 안될것이므로 생성자에서 영역크기를 정해준다
		x=20;
		y=100;
		damageCount = 0;
		active = true;
	}
	
	//프레임 단위로 데이터 조작 메서드
	public void update(){
		//키보드 조작에 의해서 변경된 값을 좌표에 적용
		x = x + dx;
		y = y + dy;
		if(x>(800-image.getWidth(null)))
			x=800-image.getWidth(null);
		else if(x<0)
			x=0;
		if(y>(575-image.getHeight(null)))	
			y=575-image.getHeight(null);
		else if(y<0)
			y=0;
		if(!active){
			x=-100;
			y=-100;
		}
	}

	
	//프레임 단위로 화면에 그리기 처리하는 메서드
	public void render(Graphics g){
		if(active){
			g.drawImage(image, x, y, null);
		}
		if(damageCount == 0){
			g.drawImage(P1LifeImage2, 10, 5, null);
		}
		else if(damageCount == 1) {
			g.drawImage(P1LifeImage1, 10, 5, null);
		}
	}
	
	//게임 화면(Panel)에 수신된 KeyPress 이벤트를 처리할 메서드
	public void keyPressedHandler(KeyEvent e){
		switch (e.getKeyCode()){//getKeyCode : 눌려진 키 값 반환
		
		case KeyEvent.VK_A:
			dx= -10;
			break;
		
		case KeyEvent.VK_D:
			dx= 10;
			break;
		
		case KeyEvent.VK_W:
			dy = -10;
			break;
		
		case KeyEvent.VK_S:
			dy = 10;
			break;
		case KeyEvent.VK_Q:
			shoot = true;
		}
	}
	
	//게임 화면(Panel)에 수신된 KeyRelease 이벤트를 처리할 메서드
	public void keyReleasedHandler(KeyEvent e){
		switch (e.getKeyCode()){//getKeyCode : 눌려진 키 값 반환
		case KeyEvent.VK_A:
		case KeyEvent.VK_D:
			dx= 0;
			break;
		case KeyEvent.VK_W:
		case KeyEvent.VK_S:
			dy = 0;
			break;
		case KeyEvent.VK_Q:
			shoot = false;
		//움직임이 끝났다
		}
	}
	
	public Rectangle getArea(){
		rect.x = x;
		rect.y = y;
		return rect;
	}
}
